#ifndef __LIB_AGORA_ADMIN_IUSERMANAGER_H__
#define __LIB_AGORA_ADMIN_IUSERMANAGER_H__

#include <map>
#include "AdminIUser.h"

namespace AgoraAdmin
{

	class	IUserManager
	{
	public:
		virtual std::map<unsigned int, IUser*>*		GetUser() = 0;
		virtual IUser*								GetUser(unsigned int id) = 0;
		virtual IUser*								GetUser(std::string& login) = 0;
		virtual void								LoadUser(void) = 0;
		virtual IUser*								LoadUser(const unsigned int id) = 0;
		virtual IUser*								LoadUser(const std::string& login) = 0;
		virtual void								UnloadUser(void) = 0;
		virtual void								UnloadUser(const unsigned int) = 0;
		virtual IUser*								CreateUser(const std::string&, const std::string&) = 0; //utile de renvoyer le user mais plus de retour d'error ... a voir comment gerer les erreurs dans la lib
		virtual void								DeleteUser(void) = 0;
		virtual void								DeleteUser(const unsigned int id) = 0;
		virtual bool								UserExists(const std::string& login) = 0;
	};

}

#endif